/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package restauranteaplicacion.Ingresos;

import Clases.Observador;
import javax.swing.JTextField;
import entidad.Producto;
import CapaNegocios.CNProducto;
import CapaNegocios.CNUnidadMedida;
import entidad.DetalleDePlato;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import entidad.Unidaddemedida;
import entidad.Clasificacion;
import CapaNegocios.CNClasificacion;
import CapaNegocios.CNPlatos;
import CapaNegocios.Conversor;
import Clases.ComboBox;
import java.awt.Component;
import java.util.Observable;
import java.util.Observer;
import restauranteaplicacion.MDI;
import entidad.Platos;
import entidad.DetalleDePlato;

/**
 *
 * @author Victor
 */
public class IngresoPlatos extends javax.swing.JInternalFrame implements Observer{

    /**
     * Creates new form IngresoEmpleado
     */
    Observador obs;
    Observador padre;
    DefaultTableModel modelo;
    List<DetalleDePlato> listaDetalle;
    List<DetalleDePlato> listaDetalleEliminado;
    public IngresoPlatos() {
        initComponents();
        obs=new Observador();
        obs.addObserver(this);
        modelo = (DefaultTableModel) Tabla.getModel();
        listaDetalle = new ArrayList<>();
        actualizar();
        List<Clasificacion> lista2 = CNClasificacion.buscarActivos();
        for(Clasificacion pro : lista2)
            cmbClasificacion.addItem(new ComboBox(pro.getIdClasificacion(),pro.getNombreGenero()));
        padre = null;
        platos1= null;
        listaDetalleEliminado=null;
        jButton1.setVisible(false);
    }
     public IngresoPlatos(Observador temp) {
        initComponents();
        obs=new Observador();
        obs.addObserver(this);
        modelo = (DefaultTableModel) Tabla.getModel();
        listaDetalle = new ArrayList<>();
        actualizar();
        List<Clasificacion> lista2 = CNClasificacion.buscarActivos();
        for(Clasificacion pro : lista2)
            cmbClasificacion.addItem(new ComboBox(pro.getIdClasificacion(),pro.getNombreGenero()));
        padre = temp;
        platos1=null;
        listaDetalleEliminado=null;
        jButton1.setVisible(false);
    }
     
     public IngresoPlatos(Observador temp, Platos tempPlato) {
        initComponents();
        obs=new Observador();
        obs.addObserver(this);
        modelo = (DefaultTableModel) Tabla.getModel();
        listaDetalle = new ArrayList<>();
        actualizar();
        List<Clasificacion> lista2 = CNClasificacion.buscarActivos();
        for(Clasificacion pro : lista2)
            cmbClasificacion.addItem(new ComboBox(pro.getIdClasificacion(),pro.getNombreGenero()));
        padre = temp;
        cargarPlato(tempPlato);
        cargarDetallePlato((List)platos1.getDetalleDePlatoCollection());
        cmbClasificacion.setSelectedItem(new ComboBox(platos1.getClasificacionidClasificacion().getIdClasificacion(),
                platos1.getClasificacionidClasificacion().getNombreGenero()));
        listaDetalleEliminado= new ArrayList<>();
        jButton1.setVisible(true);
        jButton1.setEnabled(true);
    }
     
     public void cargarDetallePlato(List<DetalleDePlato> temp)
     {
         ClearTable();
         listaDetalle.clear();
         for(DetalleDePlato detalle : temp)
         {
             Producto producto = detalle.getProducto();
             float precio = detalle.getProducto().getPrecio();
             precio=Conversor.convertirProducto( producto.getUnidadDeMedidaidUnidadDeMedida(),detalle.getUnidadDeMedidaidUnidadDeMedida(), precio);
             precio = precio * detalle.getCantidad();
             modelo.addRow(new Object[]{producto.getNombre(),producto.getDescripcion(),
                 detalle.getCantidad(),detalle.getUnidadDeMedidaidUnidadDeMedida().getNombre(),detalle.getDescuentoAutomatico() ,precio});
            listaDetalle.add(detalle);
         }
     }
     
     public void cargarPlato(Platos temp)
     {
         platos1.setActivo(temp.getActivo());
         platos1.setClasificacionidClasificacion(temp.getClasificacionidClasificacion());
         platos1.setDescripcion(temp.getDescripcion());
         platos1.setDetalleDePlatoCollection(temp.getDetalleDePlatoCollection());
         platos1.setDetalleordenCollection(temp.getDetalleordenCollection());
         platos1.setDireccionImagen(temp.getDireccionImagen());
         platos1.setIdPlatos(temp.getIdPlatos());
         platos1.setNombre(temp.getNombre());
         platos1.setPrecio(temp.getPrecio());
         platos1.setPrecioCosto(temp.getPrecioCosto());
     }
    
    
    public void actualizar()
    {
        cmbUnidadMedida.removeAllItems();
        List<Unidaddemedida> lista = CNUnidadMedida.buscarTodos();
        for(Unidaddemedida pro : lista)
            cmbUnidadMedida.addItem(new ComboBox(pro.getIdUnidadDeMedida(),pro.getNombre()));
        
    }
    public void actualizarUnidadDeMedidaParametro(String parametro)
    {
        cmbUnidadMedida.removeAllItems();
       List<Unidaddemedida> lista = CNUnidadMedida.buscarTipo(parametro);
        for(Unidaddemedida pro : lista)
             cmbUnidadMedida.addItem(new ComboBox(pro.getIdUnidadDeMedida(),pro.getNombre())); 
    }


    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        platos1 = new entidad.Platos();
        jPanel1 = new javax.swing.JPanel();
        jLabel4 = new javax.swing.JLabel();
        jPanel4 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        btnCancelar = new javax.swing.JButton();
        jLabel19 = new javax.swing.JLabel();
        jLayeredPane1 = new javax.swing.JLayeredPane();
        jLabel20 = new javax.swing.JLabel();
        jLabel23 = new javax.swing.JLabel();
        txtNombrePlato = new javax.swing.JTextField();
        jLabel34 = new javax.swing.JLabel();
        txtPrecioPlato = new javax.swing.JTextField();
        jLabel35 = new javax.swing.JLabel();
        cmbClasificacion = new javax.swing.JComboBox();
        jScrollPane2 = new javax.swing.JScrollPane();
        txtDescripcionPlatos = new javax.swing.JTextArea();
        btnGuardar = new javax.swing.JButton();
        jLayeredPane2 = new javax.swing.JLayeredPane();
        jLabel28 = new javax.swing.JLabel();
        txtNombreProducto = new javax.swing.JTextField();
        jLabel29 = new javax.swing.JLabel();
        cmbNombreProducto = new javax.swing.JComboBox();
        txtDescripcionProducto = new javax.swing.JTextField();
        jLabel31 = new javax.swing.JLabel();
        txtPrecio = new javax.swing.JTextField();
        jButton2 = new javax.swing.JButton();
        cmbUnidadMedida = new javax.swing.JComboBox();
        jLabel36 = new javax.swing.JLabel();
        chbActivar = new javax.swing.JCheckBox();
        jLabel37 = new javax.swing.JLabel();
        txtCantidadProducto = new javax.swing.JTextField();
        jButton3 = new javax.swing.JButton();
        jLabel21 = new javax.swing.JLabel();
        jLayeredPane3 = new javax.swing.JLayeredPane();
        jScrollPane1 = new javax.swing.JScrollPane();
        Tabla = new javax.swing.JTable();
        btnEliminar = new javax.swing.JButton();
        btnAgregar = new javax.swing.JButton();
        jLabel30 = new javax.swing.JLabel();
        lbPrecioCosto = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();

        setBackground(new java.awt.Color(255, 255, 255));
        setClosable(true);
        setIconifiable(true);
        setTitle("Creacion de Platos");
        setAutoscrolls(true);
        setMaximumSize(new java.awt.Dimension(1045, 649));
        setMinimumSize(new java.awt.Dimension(1000, 520));
        setPreferredSize(new java.awt.Dimension(1045, 649));
        addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
            public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
                formInternalFrameClosing(evt);
            }
            public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
            }
        });
        getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.PAGE_AXIS));

        jPanel1.setBackground(new java.awt.Color(54, 149, 240));
        jPanel1.setMaximumSize(new java.awt.Dimension(2000, 50));
        jPanel1.setMinimumSize(new java.awt.Dimension(246, 50));
        jPanel1.setPreferredSize(new java.awt.Dimension(1000, 50));

        jLabel4.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N
        jLabel4.setForeground(new java.awt.Color(255, 255, 255));
        jLabel4.setText("Platos");
        jPanel1.add(jLabel4);

        getContentPane().add(jPanel1);

        jPanel4.setPreferredSize(new java.awt.Dimension(988, 430));

        jPanel2.setBackground(new java.awt.Color(255, 255, 255));
        jPanel2.setPreferredSize(new java.awt.Dimension(494, 500));

        btnCancelar.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        btnCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/restauranteaplicacion/Ingresos/circle-x-3x.png"))); // NOI18N
        btnCancelar.setText("Salir");
        btnCancelar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnCancelar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        jLabel19.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jLabel19.setText("INFORMACION DEL PLATO");

        jLayeredPane1.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

        jLabel20.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        jLabel20.setText("<html>Nombre del Plato</html>");
        jLabel20.setBounds(10, 5, 100, 40);
        jLayeredPane1.add(jLabel20, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel23.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        jLabel23.setText("Clasificacion");
        jLabel23.setBounds(440, 20, 80, 15);
        jLayeredPane1.add(jLabel23, javax.swing.JLayeredPane.DEFAULT_LAYER);

        txtNombrePlato.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        txtNombrePlato.setNextFocusableComponent(txtPrecioPlato);

        org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, platos1, org.jdesktop.beansbinding.ELProperty.create("${nombre}"), txtNombrePlato, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        txtNombrePlato.setBounds(110, 10, 170, 30);
        jLayeredPane1.add(txtNombrePlato, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel34.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        jLabel34.setText("<html>Precio Venta</html>");
        jLabel34.setBounds(290, 10, 50, 30);
        jLayeredPane1.add(jLabel34, javax.swing.JLayeredPane.DEFAULT_LAYER);

        txtPrecioPlato.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        txtPrecioPlato.setNextFocusableComponent(cmbClasificacion);

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, platos1, org.jdesktop.beansbinding.ELProperty.create("${precio}"), txtPrecioPlato, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        txtPrecioPlato.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                txtPrecioPlatoFocusGained(evt);
            }
        });
        txtPrecioPlato.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtPrecioPlatoKeyTyped(evt);
            }
        });
        txtPrecioPlato.setBounds(330, 10, 100, 30);
        jLayeredPane1.add(txtPrecioPlato, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel35.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        jLabel35.setText("Descripcion");
        jLabel35.setBounds(690, 20, 70, 15);
        jLayeredPane1.add(jLabel35, javax.swing.JLayeredPane.DEFAULT_LAYER);

        cmbClasificacion.setNextFocusableComponent(txtDescripcionPlatos);
        cmbClasificacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmbClasificacionActionPerformed(evt);
            }
        });
        cmbClasificacion.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                cmbClasificacionKeyTyped(evt);
            }
        });
        cmbClasificacion.setBounds(520, 10, 160, 30);
        jLayeredPane1.add(cmbClasificacion, javax.swing.JLayeredPane.DEFAULT_LAYER);

        txtDescripcionPlatos.setColumns(10);
        txtDescripcionPlatos.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        txtDescripcionPlatos.setRows(2);
        txtDescripcionPlatos.setTabSize(2);
        txtDescripcionPlatos.setNextFocusableComponent(txtNombreProducto);

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, platos1, org.jdesktop.beansbinding.ELProperty.create("${descripcion}"), txtDescripcionPlatos, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        txtDescripcionPlatos.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                txtDescripcionPlatosKeyPressed(evt);
            }
        });
        jScrollPane2.setViewportView(txtDescripcionPlatos);

        jScrollPane2.setBounds(770, 10, 200, 60);
        jLayeredPane1.add(jScrollPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);

        btnGuardar.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        btnGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/circle-check-3x.png"))); // NOI18N
        btnGuardar.setText("Guardar");
        btnGuardar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnGuardar.setNextFocusableComponent(btnCancelar);
        btnGuardar.setPreferredSize(new java.awt.Dimension(89, 53));
        btnGuardar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarActionPerformed(evt);
            }
        });

        jLayeredPane2.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

        jLabel28.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        jLabel28.setText("Nombre");
        jLabel28.setBounds(10, 20, 50, 15);
        jLayeredPane2.add(jLabel28, javax.swing.JLayeredPane.DEFAULT_LAYER);

        txtNombreProducto.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        txtNombreProducto.setNextFocusableComponent(cmbNombreProducto);
        txtNombreProducto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtNombreProductoActionPerformed(evt);
            }
        });
        txtNombreProducto.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtNombreProductoKeyTyped(evt);
            }
        });
        txtNombreProducto.setBounds(60, 13, 170, 30);
        jLayeredPane2.add(txtNombreProducto, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel29.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        jLabel29.setText("<html>Seleccion el producto</html>");
        jLabel29.setBounds(290, 10, 70, 40);
        jLayeredPane2.add(jLabel29, javax.swing.JLayeredPane.DEFAULT_LAYER);

        cmbNombreProducto.setNextFocusableComponent(txtCantidadProducto);
        cmbNombreProducto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmbNombreProductoActionPerformed(evt);
            }
        });
        cmbNombreProducto.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                cmbNombreProductoKeyTyped(evt);
            }
        });
        cmbNombreProducto.setBounds(370, 10, 160, 30);
        jLayeredPane2.add(cmbNombreProducto, javax.swing.JLayeredPane.DEFAULT_LAYER);

        txtDescripcionProducto.setEditable(false);
        txtDescripcionProducto.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        txtDescripcionProducto.setBounds(550, 10, 290, 30);
        jLayeredPane2.add(txtDescripcionProducto, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel31.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        jLabel31.setText("Precio");
        jLabel31.setBounds(850, 20, 40, 15);
        jLayeredPane2.add(jLabel31, javax.swing.JLayeredPane.DEFAULT_LAYER);

        txtPrecio.setEditable(false);
        txtPrecio.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        txtPrecio.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtPrecioKeyTyped(evt);
            }
        });
        txtPrecio.setBounds(890, 10, 70, 30);
        jLayeredPane2.add(txtPrecio, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jButton2.setBackground(new java.awt.Color(255, 255, 255));
        jButton2.setForeground(new java.awt.Color(102, 102, 255));
        jButton2.setText("+");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        jButton2.setBounds(550, 60, 40, 30);
        jLayeredPane2.add(jButton2, javax.swing.JLayeredPane.DEFAULT_LAYER);

        cmbUnidadMedida.setNextFocusableComponent(chbActivar);
        cmbUnidadMedida.setBounds(370, 60, 160, 30);
        jLayeredPane2.add(cmbUnidadMedida, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel36.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        jLabel36.setText("<html>Unidad de Medida</html>");
        jLabel36.setBounds(240, 55, 120, 40);
        jLayeredPane2.add(jLabel36, javax.swing.JLayeredPane.DEFAULT_LAYER);

        chbActivar.setText("Descuento Automatico");
        chbActivar.setNextFocusableComponent(btnAgregar);
        chbActivar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chbActivarActionPerformed(evt);
            }
        });
        chbActivar.setBounds(640, 60, 180, 23);
        jLayeredPane2.add(chbActivar, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel37.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        jLabel37.setText("<html>Ingrese Cantidad a descontar\n</html>");
        jLabel37.setBounds(10, 50, 110, 50);
        jLayeredPane2.add(jLabel37, javax.swing.JLayeredPane.DEFAULT_LAYER);

        txtCantidadProducto.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        txtCantidadProducto.setNextFocusableComponent(cmbUnidadMedida);
        txtCantidadProducto.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtCantidadProductoKeyTyped(evt);
            }
        });
        txtCantidadProducto.setBounds(130, 60, 100, 30);
        jLayeredPane2.add(txtCantidadProducto, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jButton3.setBackground(new java.awt.Color(255, 255, 255));
        jButton3.setForeground(new java.awt.Color(102, 102, 255));
        jButton3.setText("+");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        jButton3.setBounds(240, 10, 40, 30);
        jLayeredPane2.add(jButton3, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel21.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jLabel21.setText("AGREGAR INGREDIENTES");

        jLayeredPane3.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

        Tabla.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
        Tabla.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Nombre", "Descripcion", "Cantidad a Descontar", "Unidad Medida", "Descuento", "Precio"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.Float.class, java.lang.Object.class, java.lang.Boolean.class, java.lang.Float.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, true, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        Tabla.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                TablaMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(Tabla);
        Tabla.getColumnModel().getColumn(0).setResizable(false);
        Tabla.getColumnModel().getColumn(1).setResizable(false);
        Tabla.getColumnModel().getColumn(2).setResizable(false);
        Tabla.getColumnModel().getColumn(3).setResizable(false);
        Tabla.getColumnModel().getColumn(4).setResizable(false);
        Tabla.getColumnModel().getColumn(5).setResizable(false);

        jScrollPane1.setBounds(10, 20, 860, 140);
        jLayeredPane3.add(jScrollPane1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/restauranteaplicacion/Ingresos/x-3x.png"))); // NOI18N
        btnEliminar.setText("Eliminar");
        btnEliminar.setBorder(null);
        btnEliminar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnEliminar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarActionPerformed(evt);
            }
        });
        btnEliminar.setBounds(880, 100, 70, 60);
        jLayeredPane3.add(btnEliminar, javax.swing.JLayeredPane.DEFAULT_LAYER);

        btnAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/plus-3x.png"))); // NOI18N
        btnAgregar.setText("<html>Agregar</html>");
        btnAgregar.setToolTipText("");
        btnAgregar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnAgregar.setNextFocusableComponent(txtNombreProducto);
        btnAgregar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnAgregar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarActionPerformed(evt);
            }
        });
        btnAgregar.setBounds(880, 20, 71, 60);
        jLayeredPane3.add(btnAgregar, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel30.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N
        jLabel30.setText("Precio Costo");

        lbPrecioCosto.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, platos1, org.jdesktop.beansbinding.ELProperty.create("${precioCosto}"), lbPrecioCosto, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/reload-3x.png"))); // NOI18N
        jButton1.setEnabled(false);
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(24, 24, 24)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(btnCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel30)
                        .addGap(18, 18, 18)
                        .addComponent(lbPrecioCosto, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(btnGuardar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(37, 37, 37))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jLayeredPane3)
                            .addComponent(jLabel21)
                            .addComponent(jLabel19)
                            .addComponent(jLayeredPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 982, Short.MAX_VALUE)
                            .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 982, Short.MAX_VALUE))
                        .addContainerGap(23, Short.MAX_VALUE))))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(23, 23, 23)
                .addComponent(jLabel19)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabel21)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLayeredPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLayeredPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 197, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(btnGuardar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel30)
                        .addComponent(lbPrecioCosto))
                    .addComponent(btnCancelar)
                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING))
                .addContainerGap(33, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 1029, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, Short.MAX_VALUE))
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 569, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, Short.MAX_VALUE))
        );

        getContentPane().add(jPanel4);

        bindingGroup.bind();

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGuardarActionPerformed
      if(modelo.getRowCount()>=1)
        {
            if(Float.parseFloat(txtPrecioPlato.getText())<Float.parseFloat(lbPrecioCosto.getText()))
            {
                JOptionPane.showMessageDialog(this, "El precio Costo del plato no puede superar el precio de Venta"
                                 + ".", "Error", JOptionPane.ERROR_MESSAGE);
                return;
            }
            try
            {
                Float precio = Float.valueOf(txtPrecioPlato.getText());
                Float precioCostos = Float.valueOf(lbPrecioCosto.getText());
                 ComboBox combo= (ComboBox) cmbClasificacion.getSelectedItem();
                 Clasificacion clasificacion = CNClasificacion.buscarId(combo.getId());
                this.actualizarDetallePlato();
                 if(platos1!= null)
                 {
                     
                     platos1.setClasificacionidClasificacion(clasificacion);
                     platos1.setDetalleDePlatoCollection(listaDetalle);
                     if(CNPlatos.modificar(platos1, listaDetalleEliminado))
                     {
                         JOptionPane.showMessageDialog(this, "Se ha Modificado correctamente", "Informacion", 
                                 JOptionPane.INFORMATION_MESSAGE);
                         padre.actualizar();
                         this.setVisible(false);
                         listaDetalleEliminado.clear();
                     }
                     else
                     {
                         JOptionPane.showMessageDialog(this, "No se ha modificado correctamente, Debe ingresar todos los datos correctamente"
                                 + ".", "Error", JOptionPane.ERROR_MESSAGE);
                         return;
                     }
                 }else if(CNPlatos.insertar(txtNombrePlato.getText(),precioCostos,precio,txtDescripcionPlatos.getText()
                         ,clasificacion.getIdClasificacion(),
                        "",listaDetalle))
                 {
                        JOptionPane.showMessageDialog(this, "Se ha guardado correctamente", "Informacion", JOptionPane.INFORMATION_MESSAGE);
                        limpiar();
                        if(padre!=null)
                        {
                            padre.actualizar();
                            this.setVisible(false);
                        }
                  }
                    else
                         JOptionPane.showMessageDialog(this, "No Se ha guardado correctamente, Debe ingresar todos los datos correctamente"
                                 + ".", "Error", JOptionPane.ERROR_MESSAGE);
            }catch(Exception e)
            {
                JOptionPane.showMessageDialog(this, "No Se ha guardado correctamente, Debe ingresar todos los datos correctamente"
                                 + ".", "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
        else
            JOptionPane.showMessageDialog(this, "No se han agregado Productos, Debe ingresar Ingredientes en el plato", "Informacion", JOptionPane.INFORMATION_MESSAGE);
    }//GEN-LAST:event_btnGuardarActionPerformed

    
    private void actualizarDetallePlato()
    {
        for (int i = 0; i < Tabla.getRowCount(); i++) // cuando es modificable el descuento y la cantidad
                {
                    //listaDetalle.get(i).setCantidad((float) modelo.getValueAt(i, 2));
                    listaDetalle.get(i).setDescuentoAutomatico((Boolean) modelo.getValueAt(i, 4));

                }
    }
    private void limpiar()
    {
        cmbNombreProducto.removeAllItems();
        txtPrecio.setText("");
        txtDescripcionProducto.setText("");
        txtNombrePlato.setText("");
        txtNombreProducto.setText("");
        limpiarProduct();
        txtDescripcionPlatos.setText("");
        txtPrecioPlato.setText("");
        txtNombrePlato.requestFocus(true);
        lbPrecioCosto.setText("0.0");
        ClearTable();        
    }
    
    private void ClearTable(){
        for (int i = 0; i < Tabla.getRowCount(); i++) {
            modelo.removeRow(i);
            i-=1;
        }
    }
    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        
        if(padre!=null)
            padre.actualizar();
        this.setVisible(false);
        // TODO add your handling code here:
    }//GEN-LAST:event_btnCancelarActionPerformed

    private void cmbNombreProductoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_cmbNombreProductoKeyTyped
        // TODO add your handling code here:
        JTextField textField = (JTextField)evt.getSource();
        String text = textField.getText();
        txtNombreProducto.setText(text);
    }//GEN-LAST:event_cmbNombreProductoKeyTyped

    private void cmbNombreProductoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbNombreProductoActionPerformed
        // TODO add your handling code here:
        if((cmbNombreProducto.getSelectedItem()!=null)&&(comboNombre==false))
        {
            
            ComboBox combo1= (ComboBox) cmbNombreProducto.getSelectedItem();
            Producto producto = CNProducto.buscarId(combo1.getId());
            txtDescripcionProducto.setText("El producto esta medido en: "+producto.getUnidadDeMedidaidUnidadDeMedida().getNombre());
            txtPrecio.setText(String.valueOf(producto.getPrecio()));
            actualizarUnidadDeMedidaParametro(producto.getUnidadDeMedidaidUnidadDeMedida().getTipo());
        }
        
    }//GEN-LAST:event_cmbNombreProductoActionPerformed
    boolean comboNombre=false;
    private void txtNombreProductoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtNombreProductoKeyTyped
        // TODO add your handling code here:
        limpiarProduct();
        if(txtNombreProducto.getText().length()>=2)
        {
            List<Producto> lista = CNProducto.buscarNombre(txtNombreProducto.getText());
            boolean x=true;
            for(Producto pro : lista)
            {
                x=false;
                cmbNombreProducto.addItem(new ComboBox (pro.getIdProducto(),pro.getNombre()));
            }
            comboNombre=false;
            if(x)
            {
                limpiarProduct();
                comboNombre=true;
            }
        }
        else
            limpiarProduct();
    }//GEN-LAST:event_txtNombreProductoKeyTyped

    private void TablaMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_TablaMouseClicked
        /*/ TODO add your handling code here:
        int fila = Tabla.rowAtPoint(evt.getPoint());
        if (fila > -1)     
            txtNombre.setText(String.valueOf(Tabla.getValueAt(fila, 1)));
        else
            txtNombre.setText("hola");*/

    }//GEN-LAST:event_TablaMouseClicked

    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
        // TODO add your handling code here:
        int fila = Tabla.getSelectedRow();
        if (fila > -1)   
        {
            Float precio = Float.valueOf(modelo.getValueAt(fila, 5).toString());
            Float totalCosto = Float.valueOf(lbPrecioCosto.getText());
            totalCosto =totalCosto- precio;
            lbPrecioCosto.setText(totalCosto.toString());
            if(listaDetalleEliminado!=null)
                listaDetalleEliminado.add(listaDetalle.get(fila));
            modelo.removeRow(fila);
            listaDetalle.remove(fila);
            
        }
        else
            JOptionPane.showMessageDialog(this, "Debe Seleccionar un  Elemento", "Error", JOptionPane.INFORMATION_MESSAGE);
    }//GEN-LAST:event_btnEliminarActionPerformed
boolean comboProducto;
    private void txtNombreProductoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtNombreProductoActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_txtNombreProductoActionPerformed

  
    
    private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarActionPerformed
        //TODO add your handling code here:        
        if(cmbNombreProducto.getModel().getSize()!=-1 && cmbNombreProducto.getSelectedItem()!= null 
                && !txtCantidadProducto.getText().equals("")  && cmbUnidadMedida.getSelectedItem()!= null )
        {
             ComboBox combo1= (ComboBox) cmbNombreProducto.getSelectedItem();
            Producto producto = CNProducto.buscarId(combo1.getId());
            ComboBox combo = (ComboBox) cmbUnidadMedida.getSelectedItem();
            Unidaddemedida unidadMedida = CNUnidadMedida.buscarId(combo.getId());
            float cantidad= Float.valueOf( txtCantidadProducto.getText());
            float precio = Float.valueOf(txtPrecio.getText());
            precio=Conversor.convertirProducto( producto.getUnidadDeMedidaidUnidadDeMedida(),unidadMedida, precio);
            precio = precio * cantidad ;
            modelo.addRow(new Object[]{producto.getNombre(),producto.getDescripcion(),cantidad,cmbUnidadMedida.getSelectedItem(),chbActivar.isSelected()
            ,precio});
            Float totalCosto = Float.valueOf(lbPrecioCosto.getText());
            totalCosto =totalCosto + precio;
            lbPrecioCosto.setText(totalCosto.toString());
            
            DetalleDePlato detalle= new DetalleDePlato();
            detalle.setCantidad(cantidad);
            detalle.setDescuentoAutomatico(chbActivar.isSelected());
            detalle.setProducto(producto);
            detalle.setUnidadDeMedidaidUnidadDeMedida(unidadMedida);
            detalle.setActivo(true);
            listaDetalle.add(detalle);
            
            limpiarDetalle();         
        }
        
    }//GEN-LAST:event_btnAgregarActionPerformed

    private void limpiarDetalle()
    {
        cmbNombreProducto.removeAllItems();
        txtDescripcionProducto.setText("");
        txtPrecio.setText("");
        txtCantidadProducto.setText("");
        txtNombreProducto.setText("");
        txtNombreProducto.requestFocus(true);
    }
    private void txtPrecioKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPrecioKeyTyped
        // TODO add your handling code here:
        char c=evt.getKeyChar();  
        if((!Character.isDigit(c))&&(c != '.')) { 
              getToolkit().beep();                
              evt.consume(); 
          }
    }//GEN-LAST:event_txtPrecioKeyTyped

    private void cmbClasificacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbClasificacionActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_cmbClasificacionActionPerformed

    private void cmbClasificacionKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_cmbClasificacionKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_cmbClasificacionKeyTyped

    private void chbActivarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chbActivarActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_chbActivarActionPerformed

    private void txtCantidadProductoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtCantidadProductoKeyTyped
        // TODO add your handling code here:
        char c=evt.getKeyChar();  
        if((!Character.isDigit(c))&&(c != '.')) { 
              getToolkit().beep();                
              evt.consume(); 
          }
    }//GEN-LAST:event_txtCantidadProductoKeyTyped

    private void txtPrecioPlatoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPrecioPlatoKeyTyped
        // TODO add your handling code here:
        char c=evt.getKeyChar();  
        if((!Character.isDigit(c))&&(c != '.')) { 
              getToolkit().beep();                
              evt.consume(); 
          }
    }//GEN-LAST:event_txtPrecioPlatoKeyTyped

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        // TODO add your handling code here:
        IngresoProducto ing = new IngresoProducto(obs);
        MDI.getDesktopPane().add(ing);
        ing.show();
        obs.addObserver(ing);
        this.Desactivar();
        
    }//GEN-LAST:event_jButton3ActionPerformed

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        // TODO add your handling code here:
        UnidadDeMedida ing = new UnidadDeMedida(obs);
        MDI.getDesktopPane().add(ing);
        ing.show();
        obs.addObserver(ing);
        this.Desactivar();
    }//GEN-LAST:event_jButton2ActionPerformed

    private void txtPrecioPlatoFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtPrecioPlatoFocusGained
        // TODO add your handling code here:
        Object o = evt.getSource(); 
        if(o instanceof javax.swing.JTextField)
        { 
            javax.swing.JTextField txt = (javax.swing.JTextField) o; 
            txt.setSelectionStart(0); 
            txt.setSelectionEnd(txt.getText().length()); 
        }
    }//GEN-LAST:event_txtPrecioPlatoFocusGained

    private void formInternalFrameClosing(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameClosing
        // TODO add your handling code here:
        if(padre!=null)
            padre.actualizar();
    }//GEN-LAST:event_formInternalFrameClosing

    private void txtDescripcionPlatosKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtDescripcionPlatosKeyPressed
        // TODO add your handling code here:
        int x = evt.getKeyCode();
        if(x==9){               
              evt.consume();
              txtNombreProducto.requestFocus(true);
          }
    }//GEN-LAST:event_txtDescripcionPlatosKeyPressed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:
        CNPlatos.actualizarCosto(platos1);
        cargarDetallePlato((List)platos1.getDetalleDePlatoCollection());
    }//GEN-LAST:event_jButton1ActionPerformed

    private void limpiarProduct()
    {
        cmbNombreProducto.removeAllItems();
        txtDescripcionProducto.setText("");
        txtPrecio.setText("");
    }
    
    private void Desactivar()
    {
        for(Component x :this.jPanel2.getComponents())
            x.setEnabled(false);
        for(Component x : this.jLayeredPane1.getComponents())
            x.setEnabled(false);
        for(Component x : this.jLayeredPane2.getComponents())
            x.setEnabled(false);
        for(Component x : this.jLayeredPane3.getComponents())
            x.setEnabled(false);
    }
    private void Activar()
    {
        for(Component x :this.jPanel2.getComponents())
            x.setEnabled(true);
        for(Component x : this.jLayeredPane1.getComponents())
            x.setEnabled(true);
        for(Component x : this.jLayeredPane2.getComponents())
            x.setEnabled(true);
        for(Component x : this.jLayeredPane3.getComponents())
            x.setEnabled(true);
        
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTable Tabla;
    private javax.swing.JButton btnAgregar;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JButton btnGuardar;
    private javax.swing.JCheckBox chbActivar;
    private javax.swing.JComboBox cmbClasificacion;
    private javax.swing.JComboBox cmbNombreProducto;
    private javax.swing.JComboBox cmbUnidadMedida;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel23;
    private javax.swing.JLabel jLabel28;
    private javax.swing.JLabel jLabel29;
    private javax.swing.JLabel jLabel30;
    private javax.swing.JLabel jLabel31;
    private javax.swing.JLabel jLabel34;
    private javax.swing.JLabel jLabel35;
    private javax.swing.JLabel jLabel36;
    private javax.swing.JLabel jLabel37;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLayeredPane jLayeredPane1;
    private javax.swing.JLayeredPane jLayeredPane2;
    private javax.swing.JLayeredPane jLayeredPane3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JLabel lbPrecioCosto;
    private entidad.Platos platos1;
    private javax.swing.JTextField txtCantidadProducto;
    private javax.swing.JTextArea txtDescripcionPlatos;
    private javax.swing.JTextField txtDescripcionProducto;
    private javax.swing.JTextField txtNombrePlato;
    private javax.swing.JTextField txtNombreProducto;
    private javax.swing.JTextField txtPrecio;
    private javax.swing.JTextField txtPrecioPlato;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration//GEN-END:variables

    @Override
    public void update(Observable o, Object arg) {
       Activar();
       actualizar();
       txtNombreProducto.requestFocus(true);       
    }
}
